/*给你一个整数 x ，如果 x 是一个回文整数，返回 true ；否则，返回 false 。

回文数是指正序（从左向右）和倒序（从右向左）读都是一样的整数。

例如，121 是回文，而 123 不是。
 

示例 1：

输入：x = 121
输出：true
示例 2：

输入：x = -121
输出：false
解释：从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3：

输入：x = 10
输出：false
解释：从右向左读, 为 01 。因此它不是一个回文数。

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/palindrome-number
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。*/

bool isPalindrome(int x){
    int xx = 0;

    //首先判断将要查询的数是不是小于0的，负数一定不是回文数
    //个位数是0的回文数只有0符合条件，所以通过这里进行判断
    if(x < 0 || x % 10 == 0 && x != 0){
        return false;
    }

    //这里用xx来承载回文之后的数字，但不需要全部回文，只需回文到中间位置，
    //这里用while循环正好可以去除中间数，继而对两个两半数进行比较即可
    while(x > xx){
        xx = xx * 10 + x % 10;
        x /= 10;
    }
    //这里的x == xx / 10用于解决单数回文数，防止出现xx大于x的情况出现
    return xx == x || x == xx / 10;
}
